"use strict";
// 矩形类
class Rectangle {
    constructor(width, height) {
        this.width = width;
        this.height = height;
    }
    area() {
        return this.width * this.height;
    }
    per() {
        return 2 * (this.width + this.height);
    }
    desp() {
        console.log("我是一个长方形");
    }
}
// 子类继承父类之后，自动获取父类定义的属性和方法
class Square extends Rectangle {
    constructor(side) {
        // super调用父类构造方法
        super(side, side);
    }
    // 子类可以添加自己的方法
    getAngle() {
        return 90;
    }
    // 方法重写：子类覆盖父类的方法，
    // 要求：方法名一样
    desp() {
        // 子类可以使用super来访问父类的方法
        super.desp();
        console.log("我是一个正方形");
    }
}
let rectangle1 = new Rectangle(20, 10);
// 使用子类的实例，指向父类的引用
let rectangle2 = new Square(20);
// 断言，把父类的引用强制转为子类（可能会出现异常）
let square = rectangle2;
console.log("角度：" + square.getAngle());
rectangle2.desp();
